package demo4接口使用实例_1;

import java.util.Comparator;

//如果自定义类型想要比较大小的话 需要实现Comparable接口
public class Student implements Comparable<Student>{
    public String name;
    public int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public int compareTo(Student o) {
        return this.age - o.age;
    }


    //给对象数组排序
    //这种方法不是很好，对类的侵入比较强
    //如果后续还有其他不同的排序需求，就需要不断的修改compareTo方法，使得Student类本身的代码结构产生入侵
//    @Override
//    public int compareTo(Student o) {
//        Student student = (Student) o;//向下转型
//        if (this.age > student.age){
//            return -1;
//        } else if (this.age < student.age) {
//            return 1;
//        }else {
//            return 0;
//        }
//    }

}

//使用Comparator接口可以使得Student后续维护添加新的方法更加方便
class AgeComparator implements Comparator<Student>{

    @Override
    public int compare(Student o1, Student o2) {
        return o2.age - o1.age;
    }
}
class NameComparator implements Comparator<Student>{

    @Override
    public int compare(Student o1, Student o2) {
        return o1.name.compareTo(o2.name);
    }
}
